let targetModelUrl = null; // 用于存储当前应该加载哪个模型URL

// 监听来自主页面（SDK）的消息
self.addEventListener('message', (event) => {
    if (event.data && event.data.type === 'SET_TARGET_MODEL') {
        console.log('[SW] 已设置目标模型URL:', event.data.url);
        targetModelUrl = event.data.url;
    }
});

// 拦截网络请求的核心逻辑
self.addEventListener('fetch', (event) => {
    const requestUrl = new URL(event.request.url);

    // 关键：判断这个请求是不是我们原始代码发出的那个写死的请求
    if (requestUrl.pathname.endsWith('/_x1')) {
        console.log(`[SW] 拦截到对 _x1 的请求!`);

        // 如果我们已经设置了要替换的目标URL
        if (targetModelUrl) {
            console.log(`[SW] 将其重定向到: ${targetModelUrl}`);
            
            // 用一个新的请求去响应，这个新请求会去云端下载真正的模型文件
            event.respondWith(fetch(targetModelUrl));
        } else {
            // 如果没有设置目标，就还是按原样执行，以防万一
            console.warn('[SW] 未设置目标模型，按原请求执行。');
            event.respondWith(fetch(event.request));
        }
    }
    // 对于其他所有请求，不进行拦截
});